#define _CRT_SECURE_NO_WARNINGS 1


#include"stack.h"
#include"queue.h"
#include"priority_queue.h"

template<class T>
class Less
{
public:
	bool operator ()(const T& a, const T& b)
	{
		return a < b;
	}
};

template<class T>
class Greater
{
public:
	bool operator ()(const T& a, const T& b)
	{
		return a > b;
	}
};

int main()
{
	yyh::stack<int> st;
	for (int i = 0; i < 5; i++)
	{
		st.push(i);
	}
	while (!st.empty())
	{
		cout << st.top() << ' ';
		st.pop();
	}
	cout << endl;

	yyh::queue<int> q;
	for (int i = 0; i < 5; i++)
	{
		q.push(i);
	}
	while (!q.empty())
	{
		cout << q.front() << ' ';
		q.pop();
	}
	cout << endl;

	yyh::priority_queue<int> pq;
	for (int i = 0; i < 5; i++)
	{
		pq.push(i);
	}
	while (!pq.empty())
	{
		cout << pq.top() << ' ';
		pq.pop();
	}
	cout << endl;

	return 0;
}